package models

import (
	"fmt"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
	"time"
)

var db *gorm.DB

type Good struct {
	Gid      string  `gorm:"column:gid"  json:"gid" binding:"required"`
	Num      float32 `gorm:"column:num"  json:"num" `
	Car      string  `gorm:"column:car"  json:"car" `
	State    bool    `gorm:"column:state"`
	Category string  `gorm:"column:category"`
}

type deport struct {
	Did    string  `gorm:"column:did" json:"did"`
	Volume float32 `gorm:"column:volume" json:"volume"`
}

type Storage struct {
	Sid    string    `gorm:"column:sid"  json:"sid"`
	Gid    string    `gorm:"column:gid"  json:"gid"`
	Num    float32   `gorm:"column:num" json:"num"`
	Did    string    `gorm:"column：did" json:"did"`
	InTime time.Time `gorm:"column:in_time" json:"in_time"`
}

type out_load struct {
	Id      string    `gorm:"column:id" json:"id"`
	OutTime time.Time `gorm:"column:out_time" json:"out_time"`
	Num     float32   `gorm:"column:num" json:"num"`
	Sid     string    `gorm:"column:sid" json:"sid"`
	Oid     string    `gorm:"column:oid" json:"oid"`
	Fee     float32   `gorm:"column:fee" json:"fee"`
}

type Model struct {
	CreatedOn int `json:"created_on" column:"created_on"`
	UpdateOn  int `json:"update_on" column:"update_on"`
	DeleteOn  int `json:"delete_on" column:"delete_on"`
}

type Order struct {
	Oid      string  `gorm:"column:oid" json:"oid"`
	Num      float32 `gorm:"column:num" json:"num"`
	Category string  `gorm:"column:category" json:"category"`
}

type InStorage struct {
	Inid     string    `gorm:"column:inid" json:"inid"`
	Num      float32   `gorm:"column:num" json:"num"`
	Car      string    `gorm:"column:car" json:"car"`
	InTime   time.Time `gorm:"column:intime" json:"intime"`
	Tons     float32   `gorm:"column:tons" json:"tons"`
	Category string    `gorm:"column:category" json:"category"`
}

type OutStorage struct {
	Outid    string    `gorm:"column:outid" json:"outid"`
	Oid      string    `gorm:"column:oid" json:"oid"`
	Num      float32   `gorm:"column:num" json:"num"`
	Tons     float32   `gorm:"column:tons" json:"tons"`
	Category string    `gorm:"column:category" json:"category"`
	OutTime  time.Time `gorm:"column:out_time" json:"out_time"`
	Fee      float32   `gorm:"column:fee" json:"fee"`
	Text     string    `gorm:"column:text" json:"text"`
}

func Setup() {
	var err error
	dsn := "user=postgres password=123456 dbname=port host=127.0.0.1 port=5432 sslmode=disable TimeZone=Asia/Shanghai"

	db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})

	if err != nil {
		fmt.Println(err)
	}
}
